From 456c810d674c74f704f67dc5311531a37d846bea Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Fri, 12 Oct 2007 14:36:37 -0600 Subject: [PATCH] [IA64] vti domain save/restore: make vmx_vcpu_set_rr() accept non-current make vmx_vcpu_set_rr accept non-current vcpu for setting vcpu context. Signed-off-by: Isaku Yamahata --- xen/arch/ia64/vmx/vmx_vcpu.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/xen/arch/ia64/vmx/vmx_vcpu.c b/xen/arch/ia64/vmx/vmx_vcpu.c index 4308d36661..63d2e945fa 100644 --- a/xen/arch/ia64/vmx/vmx_vcpu.c +++ b/xen/arch/ia64/vmx/vmx_vcpu.c @@ -171,23 +171,25 @@ IA64FAULT vmx_vcpu_set_rr(VCPU *vcpu, u64 reg, u64 val) VMX(vcpu,vrr[reg>>VRN_SHIFT]) = val; switch((u64)(reg>>VRN_SHIFT)) { case VRN7: - vmx_switch_rr7(vrrtomrr(vcpu,val), - (void *)vcpu->arch.vhpt.hash, pal_vaddr ); + if (likely(vcpu == current)) + vmx_switch_rr7(vrrtomrr(vcpu,val), + (void *)vcpu->arch.vhpt.hash, pal_vaddr ); break; case VRN4: rrval = vrrtomrr(vcpu,val); vcpu->arch.metaphysical_saved_rr4 = rrval; - if (is_virtual_mode(vcpu)) + if (is_virtual_mode(vcpu) && likely(vcpu == current)) ia64_set_rr(reg,rrval); break; case VRN0: rrval = vrrtomrr(vcpu,val); vcpu->arch.metaphysical_saved_rr0 = rrval; - if (is_virtual_mode(vcpu)) + if (is_virtual_mode(vcpu) && likely(vcpu == current)) ia64_set_rr(reg,rrval); break; default: - ia64_set_rr(reg,vrrtomrr(vcpu,val)); + if (likely(vcpu == current)) + ia64_set_rr(reg,vrrtomrr(vcpu,val)); break; } -- 2.30.2